package com.ygj.meeting.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.base.common.persistent.model.Meeting;
import com.base.common.persistent.model.MeetingSignRecord;
import com.base.common.persistent.model.SignPoint;

public interface MeetingService {

	/**
	 * 添加会议
	 * 
	 * @param meeting
	 *            会议
	 * @param employeeIdListStr
	 *            指定参加会议员工id的List JOSN字符串
	 * @return
	 */
	public int addMeeting(Meeting meeting, String employeeIdListStr);

	/**
	 * 获取签到点
	 * 
	 * @param compoundsId
	 * @return
	 */
	public List<SignPoint> getSignPointByCompounds(int compoundsId);

	/**
	 * 根据uuid或者code查询签到点信息
	 * 
	 * @param signPointId
	 * @return
	 */
	public List<Meeting> queryCouldJoinMeetingBySignPoint(int signPointId);

	/**
	 * 会议签到
	 * 
	 * @param meetingSignRecord
	 * @return
	 */
	public int sign(MeetingSignRecord meetingSignRecord);

	/**
	 * 判断是否已经签到
	 * 
	 * @param id
	 * @param meetingId
	 * @return
	 */
	public int isHaveSign(int employeeId, int meetingId);

	/**
	 * 模糊查询会议
	 * 
	 * @param conditions
	 * @param page 
	 * @return
	 */
	public List<Meeting> queryMeetingsByCondition(Map<String, Object> conditions, int page);

	/**
	 * 模糊查询会议总条数
	 * 
	 * @param conditions
	 * @return
	 */
	public int queryMeetingCountsByCondition(Map<String, Object> conditions);

	/**
	 * 根据会议id查询会议签到记录
	 * 
	 * @param meetingId
	 * @return
	 */
	public List<MeetingSignRecord> queryMeetingRecordByMeetingId(int meetingId);

	/**
	 * 查询参会人员
	 * 
	 * @param meetingId
	 * @return
	 */
	public Object queryJoinEmployee(int meetingId);

	/**
	 * 更新参会人员
	 * 
	 * @param meetingId
	 * @param employeeIds
	 * @return
	 */
	public int updateJoinEmployee(int meetingId, String employeeIds);

	/**
	 * 更新会议信息
	 * 
	 * @param meetingId
	 * @param name
	 * @param description
	 * @param startTime
	 * @param endTime
	 * @return
	 */
	public int updateMeeting(int meetingId, String name, String description, Date startTime, Date endTime);

}
